Valid Parentheses
問題概要
(){}[]のような文字列が与えられるので、それぞれのブレースが正しく閉じてるか判定せよ
[)]みたいな感じだとNGになる
解法
stackで解けばok
5分以内と思ったら17分くらいかかってしまったので反省した問題
code:solution.cpp
class Solution {
public:
bool isValid(string s) {
stack<char> st;
for (int i=0; i<s.size(); i++) {
if (c == ')') {
if (!st.empty() && st.top() == '(') st.pop();
else return false;
} else if (c == '}') {
if (!st.empty() && st.top() == '{') st.pop();
else return false;
} else if (c == ']') {
if (!st.empty() && st.top() == '[') st.pop();
else return false;
}
if (c=='(' || c=='{' || c=='[') st.push(c);
}
return st.empty();
}
};
code:main.go
func isValid(s string) bool {
st := make([]rune, 0)
for _, r := range s {
if r == '(' || r == '{' || r == '[' {
st = append(st, r)
} else {
if len(st) == 0 { return false }
if r == ')' && pop != '(' { return false }
if r == '}' && pop != '{' { return false }
if r == ']' && pop != '[' { return false }
}
}
return len(st) == 0
}